package edu.fiap.controller;

import java.util.Date;
import java.util.List;
import java.util.logging.Logger;

import com.opensymphony.xwork2.ActionSupport;

import edu.fiap.model.entity.Advogado;
import edu.fiap.model.entity.HoraAdvogado;
import edu.fiap.model.service.AdvogadoService;
import edu.fiap.model.service.HoraAdvogadoService;
import edu.fiap.util.ProjectLoggerFactory;
import edu.fiap.util.ProjectUtil;

public class HoraAdvogadoController extends ActionSupport {
	
	private static final long serialVersionUID = -8388726665918044703L;
	
	private static final Logger logger = ProjectLoggerFactory.getLogger();
	
	private List<Advogado> listAdvogados;
	private int advogadoSelected;
	private Date dtVigencia;
	private String vlHora;
	
	private List<HoraAdvogado> listHoraAdvogado;
	private String horaAdvogadoSelected;
	
	
	public String initializer(){
		logger.info("initializer hora advogado controller");
		
		//Carregando a lista de advogados possiveis
		listAdvogados = AdvogadoService.listarTodosAdvogados();
		
		//Carregando a lista das horas dos advogados
		listHoraAdvogado = HoraAdvogadoService.listarTodasHorasAdvogados();
		
		return Navigation.HORA_ADVOGADO_INITIALIZER;
	}
	
	public String insertHoraAdvogado(){

		Advogado advogado = advogadoSelected > 0 ? 
				AdvogadoService.procurarAdvogado(new Advogado(advogadoSelected)) : null;
		
		HoraAdvogado horaAdvogado = new HoraAdvogado();
		horaAdvogado.setAdvogado(advogado);
		horaAdvogado.setDtVigencia(dtVigencia);
		horaAdvogado.setVlHora( ProjectUtil.parseDouble(vlHora) );
		
		HoraAdvogadoService.inserirHoraAdvogado(horaAdvogado);
		return initializer();
	}
	
	public String deleteHoraAdvogado(){
		HoraAdvogado horaAdvogado = new HoraAdvogado(Integer.parseInt(horaAdvogadoSelected));
		HoraAdvogadoService.apagarHoraAdvogado(horaAdvogado);
		return initializer();
	}

	public List<Advogado> getListAdvogados() {
		return listAdvogados;
	}

	public void setListAdvogados(List<Advogado> listAdvogados) {
		this.listAdvogados = listAdvogados;
	}

	public int getAdvogadoSelected() {
		return advogadoSelected;
	}

	public void setAdvogadoSelected(int advogadoSelected) {
		this.advogadoSelected = advogadoSelected;
	}

	public String getVlHora() {
		return vlHora;
	}

	public void setVlHora(String vlHora) {
		this.vlHora = vlHora;
	}

	public Date getDtVigencia() {
		return dtVigencia;
	}

	public void setDtVigencia(Date dtVigencia) {
		this.dtVigencia = dtVigencia;
	}

	public List<HoraAdvogado> getListHoraAdvogado() {
		return listHoraAdvogado;
	}

	public void setListHoraAdvogado(List<HoraAdvogado> listHoraAdvogado) {
		this.listHoraAdvogado = listHoraAdvogado;
	}

	public String getHoraAdvogadoSelected() {
		return horaAdvogadoSelected;
	}

	public void setHoraAdvogadoSelected(String horaAdvogadoSelected) {
		this.horaAdvogadoSelected = horaAdvogadoSelected;
	}
}
